#pragma once
#include <optional>
#include <string>

namespace Utils {

class Encrypter {
  public:
    // 初始化
    static void init();

    // 不可获取原信息的哈希，通过用对 input 哈希后与存储的值对比方式查找
    static std::optional<std::string> crypto_hash(const std::string &input);

    static std::string hmac_sha256(const std::string &key,
                                   const std::string &data);

    // 哈希加密信息
    static std::optional<std::string>
    hash_password(const std::string &password);

    // 校验哈希加密后的信息
    static bool verify_password(const std::string &hashed_password,
                                const std::string &password);
};
} // namespace Utils
